﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using QuanLyDeTaiKHCN.Obj_class;
namespace QuanLyDeTaiKHCN.UserControls.Others
{
    public partial class ThongKe : System.Web.UI.UserControl
    {
        _dbDataContext _db = new _dbDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnsave_Click(object sender, EventArgs e)
        {
            int loai = int.Parse(drlNoiDung.SelectedValue.ToString());
            if (loai == 1)
            {
                ThongKeDeTaiDaNgiemThu();
            }
            else if (loai == 2)
            {
                ThongKeDeTaiDaThamDinhKinhPhi();
            }
            else if (loai == 3)
            {
                ThongKeDeTaiDaHopHoiDongXetChon();
            }
            else if (loai == 4)
            {
                KinhPhiDeTaiTheoHopDong();
            }
            else if (loai == 5)
            {
                KinhPhiDaChuyen();
            }
            else if (loai == 6)
            {
                KinhPhiQuyetToan();
            }
            else
            {
                KiemTraTienDo();
            }
        }

        protected void KiemTraTienDo()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblKiemTraTienDos.Where(r => r.NgayKiemTra >= tungay && r.NgayKiemTra <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày kiểm tra tiến độ</th>";
                strHTML += "<th>Giai đoạn kiểm tra tiến độ</th>";
                strHTML += "<th>Kết quả kiểm tra tiến độ</th>";
                strHTML += "</tr>";

                var listdetai = _db.tblDanhSachDeTaiDuAns;
                int stt = 0;
                foreach (var item in listdetai)
                {
                    var listkinhphi = _db.tblKiemTraTienDos.Where(r => r.MaDeTai.Trim() == item.MaDeTaiDuAn.Trim() && r.NgayKiemTra>=tungay && r.NgayKiemTra<=denngay).OrderBy(r => r.GiaiDoan);
                    if (listkinhphi.Count() != 0)
                    {
                        stt++;
                        int order = 1;
                        foreach (var item1 in listkinhphi)
                        {
                            strHTML += "<tr>";
                            if (order == 1)
                            {
                                strHTML += "<td style=text-align:center;>" + stt.ToString() + "</td>";
                                strHTML += "<td>" + item.TenDeTaiDuAn.Trim() + "</td>";
                                strHTML += "<td>" + item.TenDonViChuTri.Trim() + "</td>";
                                strHTML += "<td>" + item.ChuNhiemDeTai.Trim() + "</td>";
                            }
                            else
                            {
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                            }
                            strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", item1.NgayKiemTra) + "</td>";
                            strHTML += "<td style=text-align:center;>" + item1.GiaiDoan + "</td>";
                            strHTML += "<td>" + string.Format("{0:#,##}", item1.KetQuaKiemTra) + "</td>";
                            strHTML += "</tr>";
                            order++;
                        }
                    }
                }


                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }


        protected void KinhPhiQuyetToan()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblKiemTraTienDoKinhPhis.Where(r => r.NgayQuyetToan >= tungay && r.NgayQuyetToan <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày chuyển</th>";
                strHTML += "<th>Giai đoạn</th>";
                strHTML += "<th>Tổng kinh phí đã chuyển</th>";
                strHTML += "</tr>";

                var listdetai = _db.tblDanhSachDeTaiDuAns;
                int stt = 0;
                int tongtoanbo = 0;
                foreach (var item in listdetai)
                {
                    var listkinhphi = _db.tblKiemTraTienDoKinhPhis.Where(r => r.MaDeTai.Trim() == item.MaDeTaiDuAn.Trim() && r.NgayQuyetToan>=tungay && r.NgayQuyetToan<=denngay).OrderBy(r => r.GiaiDoan);
                    if (listkinhphi.Count() != 0)
                    {
                        stt++;
                        int order = 1;
                        int tong = 0;
                        foreach (var item1 in listkinhphi)
                        {
                            strHTML += "<tr>";
                            if (order == 1)
                            {
                                strHTML += "<td style=text-align:center;>" + stt.ToString() + "</td>";
                                strHTML += "<td>" + item.TenDeTaiDuAn.Trim() + "</td>";
                                strHTML += "<td>" + item.TenDonViChuTri.Trim() + "</td>";
                                strHTML += "<td>" + item.ChuNhiemDeTai.Trim() + "</td>";
                            }
                            else
                            {
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                            }
                            strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", item1.NgayQuyetToan) + "</td>";
                            strHTML += "<td style=text-align:center;>" + item1.GiaiDoan + "</td>";
                            strHTML += "<td>" + string.Format("{0:#,##}", item1.KinhPhiQuyetToan) + "</td>";
                            strHTML += "</tr>";
                            order++;
                            try
                            {
                                tong += int.Parse(item1.KinhPhiQuyetToan.ToString());
                            }
                            catch { }
                        }
                        tongtoanbo += tong;
                        strHTML += "<tr><td colspan=6 style=font-weight:bold;text-align:center;>Tổng kinh phí thực chuyên theo từng giai đoạn hợp đồng</td>";
                        strHTML += "<td>" + string.Format("{0:#,##}", tong) + "</td></tr>";
                    }
                }

                strHTML += "<tr><td colspan=6 style=font-weight:bold;text-align:center;color:red;>Tổng kinh phí thực chuyên theo từng giai đoạn của các đề tài</td>";
                strHTML += "<td style=color:red;font-weight:bold;>" + string.Format("{0:#,##}", tongtoanbo) + "</td></tr>";

                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }


        protected void KinhPhiDaChuyen()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblKiemTraTienDoKinhPhis.Where(r => r.NgayChuyenKinhPhi >= tungay && r.NgayChuyenKinhPhi <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày chuyển</th>";
                strHTML += "<th>Giai đoạn</th>";
                strHTML += "<th>Tổng kinh phí đã chuyển</th>";
                strHTML += "</tr>";

                var listdetai = _db.tblDanhSachDeTaiDuAns;
                int stt=0;
                int tongtoanbo = 0;
                foreach (var item in listdetai)
                {
                    var listkinhphi = _db.tblKiemTraTienDoKinhPhis.Where(r => r.MaDeTai.Trim() == item.MaDeTaiDuAn.Trim() && r.NgayChuyenKinhPhi>=tungay && r.NgayChuyenKinhPhi<=denngay).OrderBy(r=>r.GiaiDoan);
                    if (listkinhphi.Count() != 0)
                    {
                        stt++;
                        int order = 1;
                        int tong = 0;
                        foreach (var item1 in listkinhphi)
                        {
                            strHTML += "<tr>";
                            if (order == 1)
                            {
                                strHTML += "<td style=text-align:center;>" + stt.ToString() + "</td>";
                                strHTML += "<td>" + item.TenDeTaiDuAn.Trim() + "</td>";
                                strHTML += "<td>" + item.TenDonViChuTri.Trim() + "</td>";
                                strHTML += "<td>" + item.ChuNhiemDeTai.Trim() + "</td>";
                            }
                            else
                            {
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                                strHTML += "<td></td>";
                            }
                            strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}",item1.NgayChuyenKinhPhi) + "</td>";
                            strHTML += "<td style=text-align:center;>" + item1.GiaiDoan + "</td>";
                            strHTML += "<td>" + string.Format("{0:#,##}",item1.KinhPhiThucChuyen) + "</td>";
                            strHTML += "</tr>";
                            order++;
                            try
                            {
                                tong += int.Parse(item1.KinhPhiThucChuyen.ToString());
                            }
                            catch { }
                        }
                        tongtoanbo += tong;
                        strHTML += "<tr><td colspan=6 style=font-weight:bold;text-align:center;>Tổng kinh phí thực chuyên theo từng giai đoạn hợp đồng</td>";
                        strHTML += "<td>"+string.Format("{0:#,##}",tong)+"</td></tr>";
                    }
                }

                strHTML += "<tr><td colspan=6 style=font-weight:bold;text-align:center;color:red;>Tổng kinh phí thực chuyên theo từng giai đoạn của các đề tài</td>";
                strHTML += "<td style=color:red;font-weight:bold;>" + string.Format("{0:#,##}", tongtoanbo) + "</td></tr>";

                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }

        protected void KinhPhiDeTaiTheoHopDong()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblTheoDoiHopDongs.Where(r => r.NgayHopDong >= tungay && r.NgayHopDong <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Số hợp đồng</th>";
                strHTML += "<th>Ngày hợp đồng</th>";
                strHTML += "<th>Kinh phí hợp đồng</th>";
                strHTML += "</tr>";
                int i = 1;
                int tongcacdetai = 0;
                foreach (var item in list)
                {
                    strHTML += "<tr>";
                    strHTML += "<td style=text-align:center;>" + i.ToString() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDeTaiDuAn.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDonViChuTri.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.ChuNhiemDeTai.Trim() + "</td>";
                    strHTML += "<td>" + item.SoHopDong.Trim() + "</td>";
                    strHTML += "<td style=text-align:center;>" + string.Format("{0:dd/MM/yyyy}",item.NgayHopDong) + "</td>";
                    //tinh tong kinh phi cho de tai theo tung gia doan.
                    string[] st = item.GiaiDoanThucHien.Split('@');
                    int tong = 0;
                    foreach (var st1 in st)
                    {
                        try
                        {
                            tong += int.Parse(st1.Split('!')[2]);
                        }
                        catch { }
                    }
                    strHTML += "<td>" + string.Format("{0:#,##}",tong) + "</td>";
                    strHTML += "</tr>";
                    tongcacdetai += tong;
                }
                strHTML += "<tr style=font-weight:bold;><td style=text-align:center; colspan=6>Tổng kinh phí</td>";
                strHTML += "<td style=text-align:center;>" + string.Format("{0:#,##}", tongcacdetai) + "</td></tr>";
                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }

        protected void ThongKeDeTaiDaHopHoiDongXetChon()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblHopHoiDongs.Where(r => r.NgayHopHoiDong >= tungay && r.NgayHopHoiDong <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày họp hội đồng xét chọn</th>";
                strHTML += "<th>Kết quả họp hội đồng xét chọn</th>";
                strHTML += "<th>Số quyết định cho thực hiện-Ngày</th>";
                strHTML += "</tr>";
                int i = 1;
                foreach (var item in list)
                {
                    strHTML += "<tr>";
                    strHTML += "<td style=text-align:center;>" + i.ToString() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDeTaiDuAn.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDonViChuTri.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.ChuNhiemDeTai.Trim() + "</td>";
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", item.NgayHopHoiDong) + "</td>";
                    strHTML += "<td style=text-align:center;>" + ((bool)item.KetQua==true?"Cho phép thực hiện":"Không cho phép thực hiện") + "</td>";
                    try
                    {
                        strHTML += "<td style=text-align:center;>" + item.tblDanhSachDeTaiDuAn.tblPheDuyetDeTai.SoQuyetDinh + "/BB-SKHCN-" + string.Format("{0:dd/MM/yyyy}", item.tblDanhSachDeTaiDuAn.tblPheDuyetDeTai.NgayQD) + "</td>";
                    }
                    catch { strHTML += "<td></td>"; }
                    strHTML += "</tr>";
                }
                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }

        protected void ThongKeDeTaiDaNgiemThu()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay= CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblHopHoiDongNghiemThus.Where(r=>r.NgayHopHoiDong>=tungay && r.NgayHopHoiDong<=denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày nghiệm thu</th>";
                strHTML += "<th>Điểm nghiệm thu</th>";
                strHTML += "<th>Kết quả nghiệm thu</th>";
                strHTML += "</tr>";
                int i=1;
                foreach (var item in list)
                {
                    strHTML += "<tr>";
                    strHTML+="<td style=text-align:center;>"+i.ToString()+"</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDeTaiDuAn.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDonViChuTri.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.ChuNhiemDeTai.Trim() + "</td>";
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}",item.NgayHopHoiDong) + "</td>";
                    strHTML += "<td style=text-align:center;>" + item.TongDiem.ToString() + "</td>";
                    strHTML += "<td style=text-align:center;>" + item.XepLoai.Trim().Substring(2) + "</td>";
                    strHTML += "</tr>";
                }
                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }

        protected void ThongKeDeTaiDaThamDinhKinhPhi()
        {
            DateTime tungay = CatalogAccess.ConvertToDate(txtTuNgay.Text);
            DateTime denngay = CatalogAccess.ConvertToDate(txtDenNgay.Text);
            var list = _db.tblThamDinhKinhPhis.Where(r => r.NgayThamDinh >= tungay && r.NgayThamDinh <= denngay).ToList();
            if (list.Count() > 0)
            {
                string strHTML = "<table class=tableformat><tr>";
                strHTML += "<th>STT</th>";
                strHTML += "<th>Tên đề tài đã nghiệm thu</th>";
                strHTML += "<th>Đơn vị thực hiện</th>";
                strHTML += "<th>Chủ nhiệm đề tài</th>";
                strHTML += "<th>Ngày thẩm định kinh phí</th>";
                strHTML += "<th>Kinh phí thẩm định</th>";
                strHTML += "<th>Số biên bản TĐKP-Ngày</th>";
                strHTML += "</tr>";
                int i = 1;
                foreach (var item in list)
                {
                    strHTML += "<tr>";
                    strHTML += "<td style=text-align:center;>" + i.ToString() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDeTaiDuAn.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.TenDonViChuTri.Trim() + "</td>";
                    strHTML += "<td>" + item.tblDanhSachDeTaiDuAn.ChuNhiemDeTai.Trim() + "</td>";
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", item.NgayThamDinh) + "</td>";
                    strHTML += "<td style=text-align:center;>" + item.TongKinhPhiDuocDuyet.ToString() + "</td>";
                    strHTML += "<td style=text-align:center;>" + item.SoQuyetDinh+"/BB-SKHCN-"+string.Format("{0:dd/MM/yyyy}",item.NgayQuyetDinh) + "</td>";
                    strHTML += "</tr>";
                }
                lbldetail.Text = strHTML;
                lbldetail.ForeColor = System.Drawing.Color.Black;
            }
            else
            {
                lbldetail.Text = "Không có dữ liệu.";
                lbldetail.ForeColor = System.Drawing.Color.Red;
            }
        }

    }
}